const express = require('express');
const router = express.Router();

// 导入工具和中间件
const { success, error, badRequest, notFound, asyncHandler, paginated } = require('../utils/response');
const { authenticateToken } = require('../utils/auth');

// 导入服务层
const authService = require('../services/authService');

/**
 * 获取用户列表（管理员功能）
 * GET /users
 */
router.get('/', authenticateToken, asyncHandler(async (req, res) => {
  // 这里应该检查管理员权限
  // 暂时返回简单响应
  success(res, [], '用户列表');
}));

/**
 * 获取用户详情
 * GET /users/:id
 */
router.get('/:id', authenticateToken, asyncHandler(async (req, res) => {
  const { id } = req.params;
  
  if (!id || isNaN(parseInt(id))) {
    return badRequest(res, '无效的用户ID');
  }
  
  try {
    // 这里应该调用用户服务获取用户详情
    // 暂时返回简单响应
    success(res, { id: parseInt(id) }, '用户详情');
  } catch (err) {
    return badRequest(res, err.message);
  }
}));

/**
 * 更新用户信息
 * PUT /users/:id
 */
router.put('/:id', authenticateToken, asyncHandler(async (req, res) => {
  const { id } = req.params;
  
  if (!id || isNaN(parseInt(id))) {
    return badRequest(res, '无效的用户ID');
  }
  
  // 检查是否为当前用户或管理员
  if (parseInt(id) !== req.user.id) {
    return badRequest(res, '无权修改其他用户信息');
  }
  
  try {
    const result = await authService.updateUserProfile(req.user.id, req.body);
    success(res, result, '用户信息更新成功');
  } catch (err) {
    return badRequest(res, err.message);
  }
}));

/**
 * 删除用户（管理员功能）
 * DELETE /users/:id
 */
router.delete('/:id', authenticateToken, asyncHandler(async (req, res) => {
  const { id } = req.params;
  
  if (!id || isNaN(parseInt(id))) {
    return badRequest(res, '无效的用户ID');
  }
  
  // 这里应该检查管理员权限
  // 暂时返回简单响应
  success(res, null, '用户删除成功');
}));

module.exports = router;
